Não tenho certeza do que tô falando, vou apenas especular... Talvez o valor que retorne quando você pega a velocidade da criatura seja a velocidade atual, modificada, que está negativa, e, talvez, esse valor esteja marcado como unsigned na source, se tornando 0 ou NULL, tente pegar esse valor antes de mudá-lo, caso retorne normal, coloque-o em um storage.
(resolvido) remover speed de criatura e depois retornar
Por nbb147, 27 de jul. de 2016 em Scripts
info
Grupo: Visconde
Registrado: 06/04/11
Posts: 350
Reputação: +8
Char no Tibia: Mulekepirado

mais ai é que ta cara, eu tentei fazer isso, eu relacionei a velocidade que ele estava a uma storage(800000), dessa maneira salvando a velocidade dele, entende?
info
Grupo: Visconde
Registrado: 06/04/11
Posts: 350
Reputação: +8
Char no Tibia: Mulekepirado

--------------------------EDIT----------------------
o monstro está seguindo o jogador, mas como tem um return false na segunda checagem do onAttack o monstro não ataca o jogador que possui a storage(ou seja, persegue mas não acerta o dano), queria saber como faço para não precisar desse return false, pois ele retorna dizendo que a função onAttack é falsa ;c, com o meu baixo conhecimento sobre script não vejo um meio de fazer isso ;c
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Usa: return true
info
Grupo: Visconde
Registrado: 06/04/11
Posts: 350
Reputação: +8
Char no Tibia: Mulekepirado

quando coloca return true ele fica bugando(travando), acho que é porque o script retorna tudo como verdadeiro, até a parte que tira a speed, conhece algum método de fazer isso sem dar esse problema? ; /
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Se ele está travando é porque ele está caindo em um loop.
Vou analisar esse seu script para tentar averiguar onde esteja o erro.
info
Grupo: Campones
Registrado: 05/05/16
Posts: 3
Reputação: 0
Eso se modifica en la sources
info
Grupo: Visconde
Registrado: 06/04/11
Posts: 350
Reputação: +8
Char no Tibia: Mulekepirado

@Poccnn por favor cara, olha mesmo, por que tá foda, já endoidei muito com esse script, acho que apenas não tenho conhecimento o suficiente ainda para fazer o que desejo, agradeço desde já a sua colaboração.
@ricardo231 como? isso evitaria do return false deixar de atrapalhar o 'onAttack'?
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Nao tem nada haver com sources.
Esse seu script está dificil de ser compreendido, então me explica; qual a finalidade desse script?
info
Grupo: Visconde
Registrado: 06/04/11
Posts: 350
Reputação: +8
Char no Tibia: Mulekepirado

Bom, vou explicar cada parte "onAttack", "onCombat" e o "onKill":
O onAttack checa se o player possui certa storage e se ele não tiver o monstro não consegue atacar o ele(nessa parte o player faz uma checagem da velocidade do monstro e guarda ela a ligando a uma storage), se ele tiver a storage o monstro consegue ataca-lo, e caso chegue primeiro um player que não possua ele ficará parado, em seguida se aparecer um player que tenha a storage ele faz a checagem novamente só que retornando a velocidade que o monstro tinha, pois ele guardou pois ele havia guardo.
O onCombat ele faz com que o player não consiga atacar o monstro se ele não possuir storage, se ele possuir simplesmente consegue ataca-lo.
O onKill simplesmente retira uma storage e adiciona outra ao matar a criatura.
Obrigado por tentar ajudar.
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Entao seria: o player e o monstro só pode atacar determinados seres que tenham a storage.
Teins certeza que a função setPlayerStorageValue, consegue adicionar esse valor em monstros?
Como o player e o monstro adquirem essa store?
Essa questão de paralisar um jogador que não tenha a store, como ele voltaria a andar?
info
Grupo: Visconde
Registrado: 06/04/11
Posts: 350
Reputação: +8
Char no Tibia: Mulekepirado

exatamente, sim, certeza ela adiciona pois como eu disse ela funciona até certo ponto, e eu sei que funciona pois já usei em outras ocasiões, tipo é feito duas checagens a primeira na linha do if é pra saber se o player possui a storage, e a que adiciona ou tira a velocidade do monstro depende da checagem feito no jogador, tipo, checa a storage do jogador se ele possuir, é feito a checagem do monstro e nesse processo é adquirido a sto de velocidade, estou com pressa agora, qualquer coisa te explico mais tarde
Editado Julho 30 por nbb147
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

O monstro e o player tem que ter a mesma storage?
Como o monstro ganha store?





info
Grupo: Visconde
Registrado: 06/04/11
Posts: 350
Reputação: +8
Char no Tibia: Mulekepirado
E ai galera, esses dias eu estava tentando fazer um script que o pessoal procura muito que é o famoso sistema de saga, que consiste no seguinte, o player só pode atacar e ser atacado por uma devida criatura se possuir certa storage caso contrario a criatura não ira se mover, bom, consegui fazer quase tudo em lua, só que existe um pequeno problema, que é o seguinte, esse problema está na parte que retorna a speed da criatura, a speed não retorna, tudo funciona corretamente exceto essa parte, peça a ajuda de vocês e agradeço desde já, script:
local name, storage = 'fire devil', 11112local sto = 800000local speedchange = 0function onAttack(cid, target)if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 thensetPlayerStorageValue(cid, sto, getCreatureSpeed(cid))doChangeSpeed(cid, -getCreatureSpeed(cid))doChangeSpeed(cid, speedchange)return falseendif isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) > 1 then -- O ERRO PERTENCE A ESSA PARTEdoChangeSpeed(cid, -getCreatureSpeed(cid))local oldspeed = getPlayerStorageValue(cid, sto) == -1 and getCreatureBaseSpeed(cid) or getPlayerStorageValue(cid, sto)doChangeSpeed(cid, oldspeed)return false -- O PROBLEMA ESTA AQUIendreturn trueendfunction onCombat(cid, target)if isPlayer(cid) and getCreatureStorage(cid, storage) < 0 and isMonster(target) and getCreatureName(target):lower() == name thendoPlayerSendCancel(cid, 'You cannot attack this monster.')return falseend if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 thenreturn falseendreturn trueendfunction onKill(cid, target, lastHit)if isMonster(target) and getCreatureName(target):lower() == name and isPlayer(cid) and getCreatureStorage(cid, storage) > 0 thendoCreatureSetStorage(cid, storage, -1)endreturn trueendEditado Julho 30 por nbb147